package com.ims.system.tag;

import java.io.IOException;
import java.io.StringWriter;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.ims.common.constant.IMSCons;
import com.ims.common.matatype.Dto;
import com.ims.common.matatype.Dtos;
import com.ims.common.support.velocity.VelocityHelper;
import com.ims.common.util.IMSUtil;
import com.ims.system.model.Dict;
import com.ims.system.tag.resource.TagResource;
import com.ims.system.util.CacheCxt;



/**
 * 
 * 类描述： 字典数据格式化标签
 * 创建人：陈骑元
 * 邮箱：240823329@qq.com
 * 创建时间：Oct 7, 2016 9:34:49 AM
 * 修改人：
 * 修改时间：
 * 修改备注： 
 * @version 1.0
 */
public class CodeFormatterTag extends TagSupport {

	
		/**  描述   (@author: wangjianglong) */      
	    
	private static final long serialVersionUID = 1L;
	private static Log log = LogFactory.getLog(CodeFormatterTag.class);
	
	private String dictKeys;
	private String formatFields;

	public void setFormatFields(String formatFields) {
		this.formatFields = formatFields;
	}

	/**
	 * 标签开始
	 */
	@SuppressWarnings("static-access")
	public int doStartTag() throws JspException {
		StringBuffer sb = new StringBuffer();
		sb.append(IMSCons.SCRIPT_START);
		Dto vmDto=Dtos.newDto();
		String[] arrayFields = dictKeys.split(IMSCons.MARK_CSV);

		
		for (int i = 0; i < arrayFields.length; i++) {
			String dictKey=arrayFields[i];
			String valueKey=this.getFormatField(dictKey, i); //获取格式化的字段
			List<Dict> codeList=CacheCxt.getCacheDict(dictKey);
			vmDto.put("dictKey",dictKey);
			vmDto.put("valueKey", valueKey);
			vmDto.put("codeList", codeList);
			StringWriter writer = VelocityHelper.mergeFileTemplate(TagResource.CODE_FORMATTER_VM, vmDto);
			sb.append(writer.toString()).append("\n");
		}
		sb.append(IMSCons.SCRIPT_END);
		try {
			pageContext.getOut().write(sb.toString());
		} catch (IOException e) {
			log.error("字典格式化标签发生错误："+ e.getMessage());
			e.printStackTrace();
		}
		return super.SKIP_BODY;
	}
    /**
     * 
     * 简要说明：返回字段
     * 编写者：陈骑元
     * 创建时间：2018年10月28日 上午9:38:00
     * @param 说明
     * @return 说明
     */
	private String getFormatField(String dictKey,int index ){
		if(IMSUtil.isNotEmpty(formatFields)){
			String[] arrayFormatFields = formatFields.split(IMSCons.MARK_CSV);
			if(IMSUtil.isNotEmpty(arrayFormatFields)){
				int len=arrayFormatFields.length;
				if(index<=len-1){
					
					return arrayFormatFields[index];
				}
			}
		}
		return dictKey;
	}
	/**
	 * 标签结束
	 */
	@SuppressWarnings("static-access")
	public int doEndTag() throws JspException {
		return super.EVAL_PAGE;
	}

	/**
	 * 释放资源
	 */
	public void release() {
		dictKeys = null;
		super.release();
	}

	public void setDictKeys(String dictKeys) {
		this.dictKeys = dictKeys;
	}



}
